import numpy as np

### 一、创建ndarray
## 1、使用np.array()创建
list_l = [1, 2, 3, 4, b"1"]
n = np.array(list_l)
print(n, type(n))  # [b'1' b'2' b'3' b'4' b'1'] <class 'numpy.ndarray'>

## 2、使用np的routines（常规）函数创建
# 1、全是1的ndarray
print(np.ones(shape=(2, 3), dtype=np.float32))
# 2、全是0的ndarray
print(np.zeros(shape=(2, 3), dtype=np.int16))
# 3、使用指定的值填充ndarray
print(np.full(shape=(2, 3), fill_value=4, dtype=np.int16))
# 4、生成N行M列，对角线都是1其他位置是0的二维ndarray, k: Index of the diagonal
print(np.eye(N=2, M=3, k=-1))
# 5、在start至stop内返回均匀间隔的数字, 个数为num的ndarray, endpoint: 控制stop是否包括
print(np.linspace(start=0, stop=10, num=10, endpoint=False, retstep=True))
# 6、生成start(闭)至stop(开), 步长为step的ndarray
print(np.arange(start=0, stop=10, step=2))
# print(np.arange(start=-1, stop=1, step=0.2))
# 注: 若步长为非整数, 会有错误, 使用np.linspace
# 7、生成随机整数组成的low(闭)至high(开)维度为size的ndarray
print(np.random.randint(low=0, high=100, size=(3, 4, 5)))
# 8、生成平均值为loc, 方差为scale的正态分布(高斯分布)
print(np.random.normal(loc=10, scale=3, size=(100, 3)))
# 9、标准正态分布(平均值为0, 方差为1的正态分布), 参数为维度
print(np.random.randn(2, 3, 4))
# 10、生成0(闭)至1(开)的随机数, 维度为size
print(np.random.random(size=(4, 3, 2)))
